﻿using AutoMapper;
using QuanLyGiaoVuDAL.DTO;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace QuanLyGiaoVuUI.Models.GiangVienClient
{
    public class ThongTinGiangVienClientViewModel
    {
        public System.Guid ID { get; set; }

        [Required(ErrorMessage="Chưa nhập Mã giảng viên")]
        [Display(Name = "Mã Giảng Viên")]
        public string MaGiangVien { get; set; }

        [Required(ErrorMessage="Chưa nhập Họ và tên giảng viên")]
        [Display(Name = "Họ và tên")]
        public string HoTenGV { get; set; }

        [Required(ErrorMessage="Chưa nhập giới tính")]
        [Display(Name = "Giới tính")]
        public int GioiTinh { get; set; }

        [Required(ErrorMessage="Chưa nhập ngày sinh")]
        [Display(Name = "Ngày sinh")]
        public System.DateTime? NgaySinh { get; set; }

        [Required(ErrorMessage="Chưa nhập ngày vào công tác")]
        [Display(Name = "Ngày vào công tác")]
        public DateTime NgayVaoCongTac { get; set; }

        [Required(ErrorMessage="Chưa chọn học vị")]
        [Display(Name = "Học vị")]
        public int MaHocVi { get; set; }

        [Display(Name = "Học hàm")]
        public System.Nullable<int> MaHocHam { get; set; }

        [Display(Name = "Chức vụ")]
        public Guid? MaChucVu { get; set; }

        [Display(Name = "Địa chỉ")]
        public string DiaChi { get; set; }

        [Display(Name = "Số điện thoại")]
        public string SoDienThoai { get; set; }

        [RegularExpression(@"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?",ErrorMessage="Email không đúng định dạng!")]
        public string Email { get; set; }


        public Guid? MaChucDanh { get; set; }
        public BoMonDTO BoMon { get; set; }
        public HocViDTO HocVi { get; set; }
        public HocHamDTO HocHam { get; set; }
        public IEnumerable<ChucVuDTO> ChucVu { get; set; }
        public ChucDanhDTO ChucDanh { get; set; }

        public IEnumerable<HocViDTO> DanhSachHocVi;
        public IEnumerable<HocHamDTO> DanhSachHocHam;
        public IEnumerable<ChucVuDTO> DanhSachChucVu;
        public IEnumerable<MonHocDTO> DanhSachMonHocGiangDay;
        public IEnumerable<LopMonHocDTO> DanhSachLopMonHoc;
        public HocKyDTO HocKyHienTai;
        public NamHocDTO NamHocHienTai;
        public GiangVienDTO ToGiangVienDTO()
        {
            Mapper.CreateMap(typeof(ThongTinGiangVienClientViewModel), typeof(GiangVienDTO));
            GiangVienDTO giangvienDTO = new GiangVienDTO();
            Mapper.Map(this, giangvienDTO);
            return giangvienDTO;
        }

        public ThongTinGiangVienClientViewModel FromGiangVienDTO(GiangVienDTO giangVienDTO)
        {
            Mapper.CreateMap(typeof(GiangVienDTO),typeof(ThongTinGiangVienClientViewModel));
            ThongTinGiangVienClientViewModel model = new ThongTinGiangVienClientViewModel();
            Mapper.Map(giangVienDTO, model);
            return model;
        }
    }
}